package me.zhengjie.ppService;

import lombok.RequiredArgsConstructor;
import me.zhengjie.pojo.StationStatus;
import me.zhengjie.pojo.sqlServer.PPStation;
import me.zhengjie.repository.PPStationRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Component
@RequiredArgsConstructor
public class PPStationService {

    private final PPStationRepository ppStationRepository;

    @Transactional
    public boolean startWorking(String stationCode) {
        // 更新工作站状态为工作中
        PPStation ppStation = ppStationRepository.getByStationCode(stationCode);
//        //因为1号口有入库和出库的功能，数据库有俩条记录，所以需要俩条记录都更新
//        if (ppStation.getStationName().equals("1号口")) {
//        // 查询所有站点名称为"1号口"的ppStation
//            List<PPStation> ppStations = ppStationRepository.findAllByStationName("1号口");
//        // 遍历ppStations
//            for (PPStation object : ppStations) {
//        // 将站点状态设置为工作状态
//                object.setStationStatus(StationStatus.WORK_STATUS);
//                ppStationRepository.save(object);
//            }
//        } else {
//        // 将ppStation的站点状态设置为工作状态
//            ppStation.setStationStatus(StationStatus.WORK_STATUS);
//        // 保存ppStation
//            ppStationRepository.save(ppStation);
//        }

        // 将ppStation的站点状态设置为工作状态
        ppStation.setStationStatus(StationStatus.WORK_STATUS);
        // 保存ppStation
        ppStationRepository.save(ppStation);

        // 根据站点编码查询ppStation
        PPStation ppStation1 = ppStationRepository.getByStationCode(stationCode);
        // 初始化结果
        int result = 0;
        // 如果ppStation1的站点状态等于工作状态
        if (ppStation1.getStationStatus() == StationStatus.WORK_STATUS) {
            result = 1;
        }
        return result == 1;

    }


    @Transactional
    public boolean finishWorking(String stationCode) {
        // 更新工作状态为空闲
        PPStation ppStation = ppStationRepository.getByStationCode(stationCode);
//        //因为1号口有入库和出库的功能，数据库有俩条记录，所以需要俩条记录都更新
//        if (ppStation.getStationName().equals("1号口")) {
//            //根据站点名称查找所有的PPStation对象
//            List<PPStation> ppStations = ppStationRepository.findAllByStationName("1号口");
//            //遍历每一个PPStation对象
//            for (PPStation object : ppStations) {
//                //将站点状态设置为空闲状态
//                object.setStationStatus(StationStatus.FREE_STATUS);
//                ppStationRepository.save(object);
//            }
//        } else {
//            ppStation.setStationStatus(StationStatus.FREE_STATUS);
//            ppStationRepository.save(ppStation);
//        }

        ppStation.setStationStatus(StationStatus.FREE_STATUS);
        ppStationRepository.save(ppStation);


        // 定义一个整型变量result，初始值为0
        int result = 0;
        // 根据站点编码获取PPStation实体类对象ppStation1
        PPStation ppStation1 = ppStationRepository.getByStationCode(stationCode);
        // 如果ppStation1的站点状态为空闲状态
        if (ppStation1.getStationStatus() == StationStatus.FREE_STATUS) {
            result = 1;
        }
        return result == 1;
    }

    // 获取所有的工作站
    public List<PPStation> getAllStation() {
        return ppStationRepository.findAll();
    }


    public PPStation getStationByCode(String stationCode) {

        return ppStationRepository.getByStationCode(stationCode);
    }

    //查没被锁的左侧工作站
    public List<PPStation> findFreeStation() {
        return ppStationRepository.findFreeStation().stream().filter(station -> station.getStationType()==0).collect(Collectors.toList());
    }


    //锁工作站
    @Transactional
    public void lockStation(String stationCode) {
        ppStationRepository.lockStation(stationCode);
    }

    //解锁工作站
     @Transactional
    public void refeaseStation(String stationCode) {
        ppStationRepository.refeaseStation(stationCode);

     }

}
